package com.bizihang.validate.code.core;

/**
 * 验证码
 */
public interface ValidateCode {
    enum TYPE {
        SMS {
            @Override
            public String getParamOnClient() {
                return "smsCode";
            }
        }, IMAGE {
            @Override
            public String getParamOnClient() {
                return "imageCode";
            }
        }, EMAIL {
            @Override
            public String getParamOnClient() {
                return "emailCode";
            }
        };

        /**
         * 验证码的客户端参数
         *
         * @return 验证码在客户端的参数类型
         */
        public abstract String getParamOnClient();
    }


    /**
     * 是否过期
     *
     * @return
     */
    boolean isExpired();

    /**
     * 获取验证码
     *
     * @return
     */
    String getCode();

    /**
     * 获取验证码长度
     *
     * @return
     */
    int getLength();
}
